package com.spark.invoicings.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 出库单表
 * 
 * @author sunyan
 * @email sunyan@gmail.com
 * @date 2024-06-13 11:10:42
 */
@Data
@TableName("t_inventory_outbound_order")
public class OutboundOrder implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 出库单ID
	 */
	@TableId(type = IdType.AUTO)
	private Integer outboundId;
	/**
	 * 出库单号
	 */
	private String outboundNumber;
	/**
	 * 发货单ID
	 */
	private Integer deliveryOrderId;
	/**
	 * 出库状态（1:审批中, 2:已出库, 3:已驳回, 4:已撤销）
	 */
	private Integer outboundStatusId;
	/**
	 * 出库类型（1:其他出库, 2:销售出库, 3:采购退货出库）
	 */
	private Integer outboundTypeId;
	/**
	 * 申请人
	 */
	private String applicant;
	/**
	 * 申请日期
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date applicationDate;
	/**
	 * 出库总量
	 */
	private Integer totalQuantity;
	/**
	 * 审核人
	 */
	private String approver;
	/**
	 * 出库日期
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date outboundDate;
	/**
	 * 出库拍照
	 */
	private String outboundPhoto;
	/**
	 * 备注
	 */
	private String remark;
	/**
	 * 出库商品ID
	 */
	private Integer productId;

	/**
	 * 采购退货ID
	 */
	private Integer purchaseReturnOrderId;
	/**
	 * 审批时间
	 * */
	private String approvalTime;

	@TableField(exist = false)
	private List<OutboundDetail> outboundDetailList;

	@TableField(exist = false)
	private DeliveryOrder deliveryOrder;

	@TableField(exist = false)
	private PurchaseReturnOrder purchaseReturnOrder;

    @TableField(exist = false)
	private String status;

	public List<OutboundDetail> getOutboundDetailList() {
		return outboundDetailList;
	}

	public void setOutboundDetailList(List<OutboundDetail> outboundDetailList) {
		this.outboundDetailList = outboundDetailList;
	}

	public String getApprovalTime() {
		return approvalTime;
	}

	public void setApprovalTime(String approvalTime) {
		this.approvalTime = approvalTime;
	}

	public DeliveryOrder getDeliveryOrder() {
		return deliveryOrder;
	}

	public void setDeliveryOrder(DeliveryOrder deliveryOrder) {
		this.deliveryOrder = deliveryOrder;
	}

	public PurchaseReturnOrder getPurchaseReturnOrder() {
		return purchaseReturnOrder;
	}

	public void setPurchaseReturnOrder(PurchaseReturnOrder purchaseReturnOrder) {
		this.purchaseReturnOrder = purchaseReturnOrder;
	}

	public Integer getPurchaseReturnOrderId() {
		return purchaseReturnOrderId;
	}

	public void setPurchaseReturnOrderId(Integer purchaseReturnOrderId) {
		this.purchaseReturnOrderId = purchaseReturnOrderId;
	}

	public Integer getOutboundId() {
		return outboundId;
	}

	public void setOutboundId(Integer outboundId) {
		this.outboundId = outboundId;
	}

	public String getOutboundNumber() {
		return outboundNumber;
	}

	public void setOutboundNumber(String outboundNumber) {
		this.outboundNumber = outboundNumber;
	}

	public Integer getDeliveryOrderId() {
		return deliveryOrderId;
	}

	public void setDeliveryOrderId(Integer deliveryOrderId) {
		this.deliveryOrderId = deliveryOrderId;
	}

	public Integer getOutboundStatusId() {
		return outboundStatusId;
	}

	public void setOutboundStatusId(Integer outboundStatusId) {
		this.outboundStatusId = outboundStatusId;
	}

	public Integer getOutboundTypeId() {
		return outboundTypeId;
	}

	public void setOutboundTypeId(Integer outboundTypeId) {
		this.outboundTypeId = outboundTypeId;
	}

	public String getApplicant() {
		return applicant;
	}

	public void setApplicant(String applicant) {
		this.applicant = applicant;
	}

	public Date getApplicationDate() {
		return applicationDate;
	}

	public void setApplicationDate(Date applicationDate) {
		this.applicationDate = applicationDate;
	}

	public Integer getTotalQuantity() {
		return totalQuantity;
	}

	public void setTotalQuantity(Integer totalQuantity) {
		this.totalQuantity = totalQuantity;
	}

	public String getApprover() {
		return approver;
	}

	public void setApprover(String approver) {
		this.approver = approver;
	}

	public Date getOutboundDate() {
		return outboundDate;
	}

	public void setOutboundDate(Date outboundDate) {
		this.outboundDate = outboundDate;
	}

	public String getOutboundPhoto() {
		return outboundPhoto;
	}

	public void setOutboundPhoto(String outboundPhoto) {
		this.outboundPhoto = outboundPhoto;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public Integer getProductId() {
		return productId;
	}

	public void setProductId(Integer productId) {
		this.productId = productId;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}
}
